package br.unifor.cct.mia.gui2;

public class CoevolutionItem {

	private Especie especie;
	private int populacao;
	private double crossover;
	private double mutacao;
	private int specieType;

	public Especie getEspecie() {
		return especie;
	}
	
	public void setEspecie(Especie especie) {
		this.especie = especie;
	}
	
	public int getPopulacao() {
		return populacao;
	}
	
	public void setPopulacao(int populacao) {
		this.populacao = populacao;
	}
	
	public double getCrossover() {
		return crossover;
	}

	public void setCrossover(double crossover) {
		this.crossover = crossover;
	}

	public double getMutacao() {
		return mutacao;
	}

	public void setMutacao(double mutacao) {
		this.mutacao = mutacao;
	}
	
	public int getSpecieType() {
		return specieType;
	}

	public void setSpecieType(int specieType) {
		this.specieType = specieType;
	}
	
	public enum Especie {
		GA(1,"GA"),PSO(2,"PSO");
		
		int specie;
		String specieLabel;
		
		private Especie(int i, String s) {
			this.specie=i;
			this.specieLabel=s;
		}
		
		public Especie getByValue(int v) {
			for ( Especie e:values() ){
				if ( v==e.getSpecie() ) return e;
			}
			return null;
		}

		public int getSpecie() {
			return specie;
		}

		public void setSpecie(int specie) {
			this.specie = specie;
		}

		public String getSpecieLabel() {
			return specieLabel;
		}

		public void setSpecieLabel(String specieLabel) {
			this.specieLabel = specieLabel;
		}
		
	}
	
	@Override
	public boolean equals(Object obj) {
		CoevolutionItem item = (CoevolutionItem)obj;
		if ( item.getEspecie().getSpecie()==this.getEspecie().getSpecie() &&
				item.getSpecieType() == this.specieType ) return true;
		return false;
	}
	
	@Override
	public int hashCode() {
		int result = this.especie.getSpecie() * 7 +
						this.specieType * 13;
		return result;
	}

}
